/*
 * TacticaPrimera.java
 *
 * Created on 16 de marzo de 2007, 14:29
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.tacticas.concursantes2007.CARLINHOS;

import futbol.tacticas.concursantes.Tactica;

import java.awt.*;
import java.util.Vector;
import futbol.tacticas.*;
//import java.math.*;

/**
 *
 * @author carlos.botella
 */
public class TacticaPrimera implements Tactica{
        
    private int nValores[][]=
    {
        {-150,0,5}, //Portero - 1
        {-70,-90,5}, //Lateral derecho - 2
        {-70,-30,5}, //Central derecho - 3
        {-70,30,5}, //Central izquierdo - 4
        {-70,90,5}, //Lateral izquierdo - 5
        {10,-80,5}, //Medio derecho - 6
        {10,0,5}, //Medio - 7
        {10,80,5}, //Medio izquierdo - 8
        {90,-60,5}, //Delantero derecho - 9
        {80,0,7}, //Delantero centro - 10
        {90,60,5}, //Delantero izquierdo - 11
                   
    };
    
    private int nPosicionDefensa[][]=
    {
        {-150,0}, //Portero - 1
        {-100,-90}, //Lateral derecho - 2
        {-100,-30}, //Central derecho - 3
        {-100,30}, //Central izquierdo - 4
        {-100,90}, //Lateral izquierdo - 5
        {-30,-80}, //Medio derecho - 6
        {-30,0}, //Medio -7
        {-30,80}, //Medio izquierdo - 8
        {0,-60}, //Delantero - 9
        {0,0}, //Delantero centro - 10
        {0,6}, //Delantero - 11
    };
    
    private int nPosicionAtaque[][]=
    {
        {-150,0}, //Portero - 1
        {-70,-90}, //Lateral derecho - 2
        {-70,-30}, //Central derecho - 3
        {-70,30}, //Central izquierdo - 4
        {-70,90}, //Lateral izquierdo - 5
        {10,-80}, //Medio derecho - 6
        {10,0}, //Medio -7
        {10,80}, //Medio izquierdo - 8
        {90,-60}, //Delantero - 9
        {100,0}, //Delantero centro - 10
        {90,6}, //Delantero - 11
                   
    };
    
    /** Creates a new instance of TacticaDefensa */
    public TacticaPrimera() {
    }
    
    public Color getColor1()
    {
        return Color.GREEN;
    }
    public Color getColor2()
    {
        return Color.WHITE;
    }
    public Color getColorNumero()
    {
        return Color.WHITE;
    }
    
    public String getNombre()
    {
        return "CARLINHOS";
    }
    public int getXInicial(int n)
    {
        return nValores[n][0];
    }
    public int getYInicial(int n)
    {
        return nValores[n][1];
    }
    public int getFuerza(int n)
    {
        return nValores[n][2];
    }
    public Vector<Comando> getComandos(SituacionJugadores sj) {
        Vector<Comando> com=new Vector();
        
        Point miequipo[] = sj.getMisJugadores();
        Point bola = sj.getBola();
        
        //Portero
        if( (miequipo[0].getX() - bola.getX() < 11 ) && (miequipo[0].getX() - bola.getX() > -11 ) && (miequipo[0].getY() - bola.getY() < 11 ) && (miequipo[0].getY() - bola.getY() > -11 ) ) 
        {
            //Parada
            if( bola.getY() < 0 )
                com.add(new ComandoTiroAPuerta(0,-10));
            else
                com.add(new ComandoTiroAPuerta(0,10));
        }
        else
        {
            //Movimiento
            int distanciaBola = 160 + ((int)(bola.getX() ));
            if( distanciaBola > 0 )
            {
                int diffy = ((int)(bola.getY()) * 10 ) / distanciaBola;
                com.add(new ComandoIrA(0,-150,diffy));
            }
            
        }
                
        //Jugadores
        int nJug=sj.getMasCercanoDeBola();
        if( nJug > 0 )
        {
            //El delantero centro se queda en el area
            if( nJug != 9 || bola.getX() > 100)
                com.add(new ComandoIrA(nJug,bola.getX(), bola.getY()));
            else
                com.add(new ComandoIrA(9,100, 0));
        }
        else
        {
            //Defensa-libero
            if( bola.getY() < 0 )
                com.add(new ComandoIrA(3,bola.getX(), bola.getY()));
            else
                com.add(new ComandoIrA(2,bola.getX(), bola.getY()));
                
        }
        
        //Disparo
        for( int j = 1; j < 11; j++ )
        {
            if( (miequipo[j].getX() - bola.getX() < 20 ) && (miequipo[j].getX() - bola.getX() > -20 ) && (miequipo[j].getY() - bola.getY() < 20 ) && (miequipo[j].getY() - bola.getY() > -20 ) ) 
            {
                int kDisparo = 10;
                if(j == 9)
                {
                    //kDisparo = 20;
                    if( bola.getY() < 0 )
                        com.add(new ComandoTiroAPuerta(j,(-1) * kDisparo));
                    else
                        com.add(new ComandoTiroAPuerta(j,kDisparo));
                    /**
                     if( bola.getY() < 0 )
                        com.add(new ComandoGolpearBola(j, -30, 160));
                    else
                        com.add(new ComandoGolpearBola(j, 30, 160));
                     **/
                }
                else
                {
                    if( bola.getY() < 0 )
                        com.add(new ComandoTiroAPuerta(j,(-1) * kDisparo));
                    else
                        com.add(new ComandoTiroAPuerta(j,kDisparo));
                }
            }
            else
            {
                if( j != nJug )
                {
                    //No tengo el balon
                    //Tomar posiciones
                    if( bola.getX() > miequipo[j].getX() )
                    {
                        com.add(new ComandoIrA(j,nPosicionAtaque[j][0], nPosicionAtaque[j][1]));
                    }
                    else if( bola.getX() < miequipo[j].getX() )
                    {
                        com.add(new ComandoIrA(j,nPosicionDefensa[j][0], nPosicionDefensa[j][1]));
                    }
                
                }
            }
        }
        
        return com;
    }
}

